// 发送 ajax 请求
/**
 * 1. 封装功能函数
 *  1.功能点明确
 *  2.函数内部应该保留固定代码（静态的）
 *  3.将动态的数据抽取成形参，由使用者根据自身的情况，动态的传入实参
 *  4.一个良好的功能函数应该设置形参的默认值
 *
 * 2.封装功能组件
 *  1.功能点明确
 *  2.组件内部保留静态的代码
 *  3.将动态的数据抽取成 props 参数，由使用者根据自身的情况以标签属性的形式动态传入 props 数据
 *  4.一个良好的组件应该设置组件的必要性及数据类型
 *
 *      props: {
 *          msg: {
 *              require: true;
 *              default: '默认值';
 *              type: String;
 *          }
 *      }
 */
import config from "./config";

export default (url, data = {}, method = 'GET') => {
    return new Promise((resolve, reject) => {
        // 1. new promise 初始化 promise 实例的状态为 pending
        wx.request({
            url: config.host + url,
            data,
            method,
            success: (res) => {
                console.log('请求成功：',res);
                resolve(res.data); // resolve 修改 promise 的状态为成功状态 resolved
            },
            fail: (err) => {
                console.log('请求失败：',err);
                reject(err); // reject 修改 promise 的状态为失败状态 rejected
            }
        })

        // wx.cloud.callContainer({
        //     "config": {
        //         "env": "prod-3g2j4xok4c15247c"
        //     },
        //     "path": url,
        //     "header": {
        //         "X-WX-SERVICE": "cloud-music",
        //         "content-type": "application/json"
        //     },
        //     "method": method,
        //     "data": data,
        //     "success": (res) => {
        //         console.log('请求成功：', res);
        //         resolve(res.data); // resolve 修改 promise 的状态为成功状态 resolved
        //     },
        //     "fail": (err) => {
        //         console.log('请求失败：', err);
        //         reject(err); // reject 修改 promise 的状态为失败状态 rejected
        //     }
        // })
    })

}
